Como criar paginação PHP com mysql?
Paginação PHP MySQL
De uma maneira simples para explicar é usado o mysqli
<?php //Inicia o código PHP.
include "conectar.php"; //Chama o arquivo com a conexão ao banco.
$p = $_REQUEST["p"]; // Pegar a página atual por GET.
// Verifica se a variável tá declarada, senão deixa na primeira página como padrão.
if(isset($p)) { $p = $p; } else { $p = 1; }
// Defina aqui a quantidade máxima de registros por página.
$qnt = 20; //No caso 20 por página.
// O sistema calcula o início da seleção, calculando:
// (página atual * quantidade por página) - quantidade por página
$inicio = ($p*$qnt) - $qnt;
// Seleciona no banco de dados com o LIMIT indicado pelos números acima.
$sql_select = "select * FROM tabela limit $inicio, $qnt";
// Executa a query com mysqli.
$sql_query = mysqli_query($conn,$sql_select);
// Faz uma nova seleção no banco de dados semelhante a anterior, mas desta vez sem LIMIT, para pegarmos o número total de registros.
$sql_select_all = "select * FROM tabela";
// Executa a query das seleções acima.
$sql_query_all = mysqli_query($conn,$sql_select_all);
// Gera uma variável com o número total de registros no banco de dados.
$total_registros = mysqli_num_rows($sql_query_all);
$num_rows = ($total_registros);
// Gera outra variável, desta vez com o número de páginas que será precisa.
// O comando ceil() arredonda "para cima" o valor.
$pags = ceil($total_registros/$qnt);
echo ' //Inicia o texto que será impresso na tela.
<div id="dados">//Inicia uma div com a class dados.
<table> //Inicia uma tabela.
<tr> //Cria a linha da tabela.
<th></th>//Espaço vazio pois é a primeira linha e primeira coluna.
//Cria o título do primeiro campo.
<th class="titulo">Código</th>
//Cria o título do segundo campo.
<th class="titulo">Descrição</th>
</tr>';//Fecha a linha dos títulos.
// Cria um while para pegar as informações do BD para os itens.
while ($row = $sql_query->fetch_array(MYSQLI_ASSOC)) {
echo '//Inicia a tabela com dados dinâmicos.
<tr>
//Chama o campo código.
<td class="item" style="text-align:center; padding:2px; vertical-align: middle; display: ">' . $row['codigo'] .'</td>
//Chama o campo descrição.
<td class="item" style="text-align:center; padding:5px;">' . $row['descricao'] .'</td>
</tr>';
}//Fecha o while.
?>//Fecha o PHP.
</table>
</div>//Acima fecha a tabela e aqui fecha a div.
<?php //Abre novamente o PHP.
if($pags > 1){ //Verifica se tem mais de uma página.
// Número máximos de botões de paginação.
$max_links = 3;
// Exibe o primeiro link "primeira página", que não entra na contagem acima(3).
echo '<a href="https://diretoaoponto-tech.com.br?p=1" target="_self">primeira página</a> ';
// Cria um for() para exibir os 3 links antes da página atual.
for($i = $p-$max_links; $i <= $p-1; $i++) {
// Se o número da página for menor ou igual a zero, não faz nada.
if($i >= 1){//Então chama o link se for 1 ou maior.
//Cria o link com o número do indice.
echo '<a href="https://diretoaoponto-tech.com.brp='.$i.'" target="_self">'.$i.'</a> ';
}//Fecha o if.
}//Fecha o for.
// Exibe a página atual, sem link, apenas o número
echo $p." ";
// Cria outro for(), desta vez para exibir 3 links após a página atual.
for($i = $p+1; $i <= $p+$max_links; $i++) {
// Verifica se a página atual é maior do que a última página. Se for, não faz nada.
if($i > $pags) {
//faz nada.
}
// Se tiver tudo Ok gera os links.
else {
echo '<a href="https://diretoaoponto-tech.com.br?p='.$i.'" target="_self">'.$i.'</a> ';
}
}
// Exibe o link "última página"
if($pags <= 0){
$i=1;
}
else{
$i=$pags;
}
echo '<a href="https://diretoaoponto-tech.com.br?p='.$i.'" target="_self">última página</a> ';
}
echo '</div>';
?>
</div>//Fecha a div inicial.
Pronto tem aí um exemplo de paginação com PHP simples e funcional. O html pode ser estilizado com o css como mostra esse link: CSS para paginação.
Leia mais em: ww.w3schools.com/bootstrap/bo...